package voucher_creator.file_handler;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import voucher_creator.Constants;

public class FileHandler {

	public String prepareVoucher(String nombre_pasajero, String destino,
			String fecha_salida) {
		String voucher_name = createVoucherName(nombre_pasajero, destino,
				fecha_salida);
		voucher_name = copyFile(Constants.FILE_VOUCHER_BASE, voucher_name);
		
		return voucher_name;
	}

	private String createVoucherName(String nombre_pasajero, String destino,
			String fecha_salida) {
		String voucher_name = "Voucher " + nombre_pasajero + " - " + destino
				+ " " + fecha_salida + ".xls";
		return voucher_name;
	}

	public String createList(String empresa, String destino, String fecha_salida) {
		String list_name = createListName(empresa, destino, fecha_salida);
		list_name = copyFile(Constants.FILE_LIST_BASE, list_name);
		return list_name;
	}
	
	private String createListName(String empresa, String destino, 
			String fecha_salida) {
		String list_name = "Listado " + empresa + " - " + destino + " " + 
			fecha_salida + ".xls"; 
		return list_name;
	}
	
	public String findList(String empresa, String destino, String fecha_salida) {
		
		String key = "Listado " + empresa + " - " + destino + " " + fecha_salida + ".xls";
		File current_directory = new File(System.getProperty("user.dir"));
		File[] files = current_directory.listFiles();
		for(File file : files) {
			if(file.getName().equals(key))
				return file.getName();
		}
		return "";
	}
	
	private String copyFile(String file_in, String file_out) {
		try {
			InputStream OrigenF = FileHandler.class.getResourceAsStream(file_in);
			FileOutputStream DestinoF = new FileOutputStream(file_out);
			int c;
			while ((c = OrigenF.read()) != -1) {
				DestinoF.write(c);
			}
			OrigenF.close();
			DestinoF.close();
		} catch (FileNotFoundException exception) {
			System.err.println("Error al abrir el archivo...");
			file_out = "";
		} catch (IOException exception) {
			System.err.println("Error al accesar el archivo...");
			file_out = "";
		}
		return file_out;
	}
}
